Priority Queue(優先隊列)是一個特別的資料結構,主要用於管理一組有序的元素。這些元素根據其優先級進行排序,而不是插入的時間或其他條件。這一特性讓它在如排程、搜索算法和數據壓縮等多種情境下非常有用。
將其具體化,想像你正在機場的登機口等待登機。乘客會根據各種優先級(例如頭等艙、商務艙、普通艙)來優先登機。在這裡,重要的不是誰先到達機場,而是誰的優先級更高。
一個常見的 Priority Queue 支持以下操作:
由於 Priority Queue 可以快速地進行基於優先級的排序和取出,它在以下情境中是非常有用的:
在實作 Priority Queue 時,一般會使用如二叉堆(Binary Heap)或 Fibonacci 堆(Fibonacci Heap)等數據結構。這些不同的實作有其各自的時間複雜度,通常: